home *** CD-ROM | disk | FTP | other *** search
- 10 ' 'FD2.BAS' ARRL PX #18 K8HF 05/27/83
- 20 '
- 30 ' FIELD DAY PROGRAM
- 40 ' by G. M. PALMER K8LG
- 50 '
- 60 ' Corrected by Harry Frietchen K8HF
- 62 ' Corrected Edit file problem &
- 64 ' added Header.
- 66 '
- 68 ' File Name conventions for Header:
- 70 ' "FDxxyyzz"
- 71 ' where xx = Year
- 72 ' yy = CW for CW
- 73 ' = PH for SSB or FM
- 74 ' = NV for Novice
- 75 ' zz = Band (in Meters)
- 76 '
- 77 ' Example "FD85CW80" = 80 meter CW for 1985
- 78 ' (When NV is specified, print out will
- 79 ' ask for Novice Call.)
- 80 ' CLEAR 5000
- 90 DEFINT A-Z
- 100 DIM B$(700),RN(700)
- 110 PRINT
- 120 PRINT"FIELD DAY CROSS CHECK PROGRAM"
- 130 PRINT"by G. M. PALMER K8LG"
- 140 PRINT
- 150 PRINT"PRINTER WIDTH ";
- 160 INPUT W
- 170 W1=INT(W/8)
- 180 W2=INT(W/13)
- 190 '
- 200 ' READ COMMAND NAMES
- 210 '
- 220 FOR K=1 TO 6
- 230 READ CMD$(K)
- 240 NEXT K
- 250 DATA EC,SC,DC,EX,EL,ED
- 260 '
- 270 ' PRINT COMMAND SUMMARY
- 280 '
- 290 FILES
- 295 PRINT
- 300 PRINT"FUNCTION: ";
- 310 PRINT TAB(13);"EC....Enter Calls"
- 320 PRINT TAB(13);"EL....Entry List"
- 330 PRINT TAB(13);"ED....Edit File"
- 340 PRINT TAB(13);"SC....Sort Calls"
- 350 PRINT TAB(13);"DC....Display Calls"
- 360 PRINT TAB(13);"EX....Exit Program"
- 370 PRINT:PRINT
- 380 '
- 390 ' INPUT COMMAND
- 400 '
- 410 PRINT"FUNCTION: ";
- 420 LINE INPUT A$
- 430 FOR K=1 TO 6
- 440 IF A$=CMD$(K) THEN GOTO 500
- 450 NEXT K
- 460 GOTO 410
- 470 '
- 480 ' CHOOSE PROGRAAM SECTION BY "K"
- 490 '
- 500 ON K GOTO 610,1260,1880,540,2220,2540
- 510 '
- 520 ' EXIT PROGRAM
- 530 '
- 540 PRINT:PRINT
- 550 PRINT"EXIT PROGRAM FD"
- 560 PRINT
- 570 STOP
- 580 '
- 590 ' ENTER CALLS TO DISK FILE
- 600 '
- 610 PRINT
- 620 PRINT
- 630 PRINT"ENTER CALLS"
- 640 GOSUB 2890
- 650 PRINT"NEW OR OLD FILE (N OR O): ";
- 660 LINE INPUT A$
- 670 IF A$="N" THEN RC=0:GOTO 820
- 680 IF A$="O" THEN GOTO 700
- 690 GOTO 650
- 700 GET #1,1
- 710 '
- 720 ' IF OLD FILE FINISH THE LAST BLOCK
- 730 '
- 740 RC=VAL(N1$)
- 750 GET #1,RC
- 760 CC=VAL(N2$)
- 770 IF CC=20 THEN A$="N":GOTO 820
- 780 N1=CC+1
- 790 CC=CC*6
- 800 C2$=LEFT$(C1$,CC)
- 810 RC=RC-1
- 820 PRINT"INPUT CALLS, TYPE DONE TO STOP"
- 830 PRINT
- 840 IF A$="O" THEN GOTO 860
- 850 C2$="":N1=1
- 860 FOR K=N1 TO 20
- 870 PRINT": ";
- 880 LINE INPUT C$
- 890 IF C$="DONE" THEN GOTO 1070
- 900 L=LEN(C$)
- 910 IF L>6 THEN PRINT "TOO LONG":GOTO 870
- 920 L1=6-L
- 930 C2$=C2$+SPACE$(L1)+C$
- 940 NEXT K
- 950 '
- 960 ' WRITE FULL BLOCK
- 970 '
- 980 RC=RC+1
- 990 RSET N2$=STR$(20)
- 1000 RSET N1$="00"
- 1010 RSET C1$=C2$
- 1020 PUT #1,RC
- 1030 GOTO 850
- 1040 '
- 1050 ' WRITE LAST BLOCK, MAYBE SHORT BLOCK
- 1060 '
- 1070 IF K=1 THEN GOTO 1160
- 1080 RC=RC+1
- 1090 RSET N2$=STR$(K-1)
- 1100 RSET N1$="00"
- 1110 LSET C1$=C2$
- 1120 PUT #1,RC
- 1130 '
- 1140 ' WRITE THE NUMBER OF BLOCKS IN FILE IN FIRST BLOCK
- 1150 '
- 1160 GET #1,1
- 1170 RSET N1$=STR$(RC)
- 1180 PUT #1,1
- 1190 CLOSE
- 1200 PRINT "FILE ";F$;" WRITTEN WITH ";RC;" BLOCKS AND ";
- 1210 PRINT(RC-1)*20+K-1;" CALLS"
- 1220 GOTO 290
- 1230 '
- 1240 ' SORT CALLS BY CALL AREA AND SUFFIX
- 1250 '
- 1260 PRINT
- 1270 PRINT"SORT CALLS"
- 1280 PRINT
- 1290 GOSUB 2890
- 1300 GOSUB 2970
- 1310 FOR K=1 TO J
- 1320 RN(K)=K
- 1330 NEXT K
- 1340 N=J
- 1350 '
- 1360 ' REMOVE THE SPACES FROM THE CALLS
- 1370 '
- 1380 FOR K=1 TO N
- 1390 FOR L=1 TO 6
- 1400 IF ASC(MID$(B$(K),L,1))<>32 THEN GOTO 1430
- 1410 NEXT L
- 1420 PRINT"ERROR":STOP
- 1430 E=7-L
- 1440 B$(K)=MID$(B$(K),L,E)
- 1450 NEXT K
- 1460 '
- 1470 ' FIRST SORT
- 1480 '
- 1490 PRINT"START FIRST SORT"
- 1500 GOSUB 3150
- 1510 '
- 1520 ' STRIP OFF THE CALL PREFIX
- 1530 '
- 1540 FOR K=1 TO N
- 1550 FOR L=1 TO LEN(B$(K))
- 1560 C=ASC(MID$(B$(K),L,1))
- 1570 IF (C>=48 AND C<=57) THEN GOTO 1650
- 1580 NEXT L
- 1590 '
- 1600 ' ERROR WHEN CALL HAS NO CALL AREA
- 1610 '
- 1620 PRINT"ERROR":PRINT B$(K);" ";
- 1630 INPUT B$(K)
- 1640 GOTO 1550
- 1650 E=7-L
- 1660 B$(K)=MID$(B$(K),L,E)
- 1670 NEXT K
- 1680 '
- 1690 ' SECOND SORT
- 1700 '
- 1710 PRINT"START SECOND SORT"
- 1720 GOSUB 3150
- 1730 '
- 1740 ' WRITE FILE WITH RECORD NUMBERS IN SORTED ORDER
- 1750 '
- 1760 F1$=F$+".SEQ"
- 1770 OPEN "O",#1,F1$
- 1780 PRINT #1,N
- 1790 FOR K=1 TO N
- 1800 PRINT #1,RN(K)
- 1810 NEXT K
- 1820 CLOSE
- 1830 PRINT"FILE ";F1$;" CLOSED"
- 1840 GOTO 290
- 1850 '
- 1860 ' PRINT CALLS ON PRINTER
- 1870 '
- 1880 PRINT
- 1890 PRINT"DISPLAY CALLS"
- 1900 PRINT
- 1910 GOSUB 2890
- 1920 GOSUB 2970
- 1930 F1$=F$+".SEQ"
- 1940 OPEN "I",#1,F1$
- 1950 INPUT #1,N
- 1960 IF N<>J THEN PRINT "ERROR":STOP
- 1970 FOR K=1 TO N
- 1980 INPUT #1,RN(K)
- 1990 NEXT K
- 2000 CLOSE
- 2005 GOSUB 3320
- 2010 LPRINT:LPRINT
- 2020 LPRINT "FIELD DAY CALLS FOR FILE ";F$
- 2030 LPRINT:LPRINT
- 2040 PRINT"TOTAL CALLS IN FILE ";F$;" ";N
- 2050 SC=0:K1=1
- 2060 FOR K=1 TO N
- 2070 IF K=1 THEN GOTO 2090
- 2080 IF B$(RN(K))=B$(RN(K-1)) THEN GOTO 2120
- 2090 LPRINT B$(RN(K));" ";
- 2100 K1=K1+1:SC=SC+1
- 2110 IF K1>W1 THEN K1=1:LPRINT
- 2120 NEXT K
- 2130 LPRINT:LPRINT:LPRINT
- 2140 LPRINT "TOTAL SCORED CONTACTS: ";SC
- 2150 LPRINT "DUPS.: ";N-SC
- 2160 LPRINT
- 2170 GOTO 290
- 2180 '
- 2190 ' PRINT THE LIST OF CALLS AS ENTERED
- 2200 ' WITH RECORD NUMBERS
- 2210 '
- 2220 PRINT
- 2230 PRINT"ENTRY LIST"
- 2240 PRINT
- 2250 GOSUB 2890
- 2260 GOSUB 2970
- 2270 LPRINT:LPRINT
- 2280 LPRINT "FIELD DAY CALLS FOR FILE ";F$
- 2290 LPRINT " CALLS ARE IN ENTRY ORDER"
- 2300 LPRINT:LPRINT
- 2310 L=INT(J/W2)
- 2320 C=J-W2*L
- 2330 IF C<>0 THEN L=L+1
- 2340 EL=W2
- 2350 FOR K=1 TO L
- 2360 IF C=0 THEN GOTO 2390
- 2370 IF K=L THEN EL=C
- 2380 I1=1
- 2390 FOR M=1 TO EL
- 2400 I=K+(M-1)*L
- 2410 IF C=0 THEN GOTO 2430
- 2420 IF M>(C+1) THEN I=I-I1:I1=I1+1
- 2430 LPRINT USING " ### ";I,
- 2440 LPRINT B$(I);
- 2450 NEXT M
- 2460 LPRINT
- 2470 NEXT K
- 2480 LPRINT:LPRINT
- 2490 LPRINT "TOTAL CALL IN FILE ";F$;" ";J
- 2500 GOTO 290
- 2510 '
- 2520 ' EDIT CALLS IN THE RANDOM FILE
- 2530 '
- 2540 PRINT
- 2550 PRINT"EDIT FILE"
- 2560 PRINT
- 2570 GOSUB 2890
- 2580 GET #1,1
- 2590 RC=VAL(N1$)
- 2600 PRINT:PRINT
- 2610 PRINT"CALL NUMBER ";
- 2620 INPUT CC
- 2630 K=INT(CC/20-.01)+1
- 2640 IF K>RC THEN PRINT"OUT OF RANGE":GOTO 2610
- 2650 GET #1,K
- 2660 J=CC-(K-1)*20
- 2670 C2$=C1$
- 2680 J=(J-1)*6+1
- 2690 PRINT MID$(C2$,J,6);" : ";
- 2700 LINE INPUT C$
- 2710 L=LEN(C$)
- 2720 IF L>6 THEN PRINT"TOO LONG": GOTO 2690
- 2730 L1=6-L
- 2740 J1=J-1
- 2750 J2=115-J
- 2760 C3$=LEFT$(C2$,J1)+SPACE$(L1)+C$+RIGHT$(C2$,J2)
- 2770 RSET C1$=C3$
- 2780 PUT #1,K
- 2790 PRINT"MORE (Y OR N): ";
- 2800 LINE INPUT A$
- 2810 IF A$="Y" THEN GOTO 2610
- 2820 IF A$="N" THEN GOTO 2840
- 2830 GOTO 2790
- 2840 CLOSE
- 2850 GOTO 290
- 2860 '
- 2870 ' SUBROUTINE TO OPEN AND SET UP RANDOM DISK FILE FOR CALLS
- 2880 '
- 2890 PRINT"DATA FILE NAME: ";
- 2900 LINE INPUT F$
- 2910 OPEN "R",#1,F$
- 2920 FIELD #1, 4 AS N1$, 4 AS N2$, 120 AS C1$
- 2930 RETURN
- 2940 '
- 2950 ' SUBROUTINE TO READ THE CALLS FROM THE RANDOM FILE
- 2960 '
- 2970 GET #1,1
- 2980 RC=VAL(N1$)
- 2990 J=1
- 3000 FOR K=1 TO RC
- 3010 GET #1,K
- 3020 CC=VAL(N2$)*6
- 3030 C2$=C1$
- 3040 FOR L=1 TO CC STEP 6
- 3050 B$(J)=MID$(C2$,L,6)
- 3060 J=J+1
- 3070 NEXT L
- 3080 NEXT K
- 3090 CLOSE
- 3100 J=J-1
- 3110 RETURN
- 3120 '
- 3130 ' SUBROUTINE TO SORT THE ARRAY B$(K)
- 3140 '
- 3150 KE=N-1
- 3160 SW=0
- 3170 FOR K=1 TO KE
- 3180 IF B$(K)<=B$(K+1) THEN GOTO 3220
- 3190 SWAP B$(K),B$(K+1)
- 3200 SWAP RN(K),RN(K+1)
- 3210 SW=1
- 3220 NEXT K
- 3230 IF SW=1 THEN KE=KE-1:GOTO 3160
- 3240 RETURN
- 3300 '
- 3310 ' TITLE FOR W8WE FIELD DAY
- 3320 '
- 3325 INPUT "CLUB CALL USED AT FIELD DAY";CALUS$
- 3330 LPRINT CHR$(12):LPRINT:LPRINT CHR$(14);" '";CALUS$;"' - Field Day 19";MID$(F$,3,2);TAB(31);
- 3340 IF MID$(F$,5,2)="NV"THEN 3370
- 3350 IF MID$(F$,5,2)="PH"THEN LPRINT MID$(F$,7);" PHONE":ELSE LPRINT TAB(34);MID$(F$,7);" CW"
- 3360 LPRINT:RETURN
- 3370 LPRINT MID$(F$,7);" Novice"
- 3380 INPUT "NOVICE CALL USED";NOV$
- 3390 LPRINT :LPRINT CHR$(14);"Novice Call - ";NOV$:LPRINT:LPRINT:RETURN
- 3400 END
- ovice"
- 3380 INPUT "NOVICE CALL USED";NOV$
- 3390 LPRINT